from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from info import create_app, db, models
from info.models import User

__author__ = 'alang'

# 调用工厂方法，创建app
app = create_app('dev')

# 7Flask_script集成
# 7.1创建脚本管理器对象
manager = Manager(app)

# 8数据库迁移集成
# 8.1在迁移时让app和db建⽴立关联
Migrate(app, db)
# 8.2将迁移脚本添加到脚本管理器
manager.add_command('db', MigrateCommand)


# 以下代码是自定义脚本
@manager.option('-u', '-username', dest='username')
@manager.option('-p', '-password', dest='password')
@manager.option('-m', '-mobile', dest='mobile')
def createsuperuser(username, password, mobile):
    """
    创建管理员的函数
    :param name: 管理员名字
    :param password: 管理员密码
    """
    if not all([username,password,mobile]):
        print('缺少参数')
    else:
        user = User()
        user.nick_name = username
        user.password = password
        user.mobile = mobile
        user.is_admin = True # 核心代码（管理员的本质）
        try:
            db.session.add(user)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            print(e)


if __name__ == '__main__':
    # 打印路由关系
    print(app.url_map)
    # app.run()
    manager.run()